將多個基模型的預測結果作為特征輸入到一個元模型中,從而得到最終的預測結果,堆疊法可以用於回歸問題和分類問題。
可以嘗試不同的元模型和基模型組合來進一步優化模型融合的效果~~~
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import StackingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加載數據
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定義基模型
estimators = [
('rf', RandomForestClassifier()),
('lr', LogisticRegression()),
('svc', SVC(probability=True))
]
# 定義元模型
meta_model = LogisticRegression()
# 創建堆疊模型
stacking_clf = StackingClassifier(estimators=estimators, final_estimator=meta_model)
# 訓練模型
stacking_clf.fit(X_train, y_train)
# 獲取模型的預測結果
y_pred = stacking_clf.predict(X_test)
# 計算準確度
accuracy = accuracy_score(y_test, y_pred)
print(f'堆疊法準確度: {accuracy}')
使用了隨機森林、邏輯回歸和支持向量機三個不同的分類器作為基模型,並將其與一個邏輯回歸模型作為元模型進行堆疊,以計算了模型在測試集上的準確度~